//
//  IMLoginService.h
//  DualMediationSDK
//
//  Created by YeJary on 2025/6/23.
//

#import <Foundation/Foundation.h>
#import "IMLoginModels.h"
#import "../../Utils/Network/IMNetworkUtils.h"

NS_ASSUME_NONNULL_BEGIN

// 登录回调类型定义
typedef void (^IMLoginSuccessBlock)(IMLoginResponse *response);
typedef void (^IMLoginFailureBlock)(NSError *error);

/**
 * 登录服务类
 * 负责处理用户登录相关的网络请求
 */
@interface IMLoginService : NSObject

/**
 * 单例实例
 */
+ (instancetype)sharedService;

/**
 * 用户登录接口
 * @param appId 应用ID
 * @param iosUuid iOS设备唯一标识
 * @param countryCode 地区代码（可选）
 * @param success 成功回调
 * @param failure 失败回调
 * @return 网络任务对象
 */
- (IMNetworkTask *)loginWithAppId:(NSString *)appId
                         iosUuid:(NSString *)iosUuid
                     countryCode:(NSString * _Nullable)countryCode
                         success:(IMLoginSuccessBlock _Nullable)success
                         failure:(IMLoginFailureBlock _Nullable)failure;

/**
 * 使用登录请求模型进行登录
 * @param request 登录请求模型
 * @param success 成功回调
 * @param failure 失败回调
 * @return 网络任务对象
 */
- (IMNetworkTask *)loginWithRequest:(IMLoginRequest *)request
                            success:(IMLoginSuccessBlock _Nullable)success
                            failure:(IMLoginFailureBlock _Nullable)failure;

@end

NS_ASSUME_NONNULL_END